#pragma once
#include "typedef.h"
namespace MircoUi{    
    class sVec2 {
    public:
        int16 x;
        int16 y;
        sVec2() : x(0), y(0) {}
        sVec2(int16 x_, int16 y_) : x(x_), y(y_) {}

        sVec2 operator+(const sVec2& other) const {
            return sVec2(x + other.x, y + other.y);
        }
        sVec2 operator-(const sVec2& other) const {
            return sVec2(x - other.x, y - other.y);
        }        
        bool operator==(const sVec2& other) const {
            return (x == other.x) && (y == other.y);
        }
        bool operator!=(const sVec2& other) const {
            return !(*this == other);
        }        
        sVec2& operator+=(const sVec2& other) {
            x += other.x;
            y += other.y;
            return *this;
        }        
        sVec2& operator-=(const sVec2& other) {
            x -= other.x;
            y -= other.y;
            return *this;
        }
    };    
    namespace eEvent {
        enum {
            TICK=0, // 定时器事件
            ENTER_PAGE, // 进入页面事件
            EXIT_PAGE, // 退出页面事件
            end_of_MircoUi_eEvent, // 事件结束标志

            KEYS_BEGIN = 0x10,
        };
    }
    typedef void (*tEvent)(uint32 event_id, uint32 event_par); // 定义一个函数指针类型，用于回调函数
    class Page {
    public:
        virtual void onEvent(uint32 event_id, uint32 event_par)=0; // 页面事件处理函数
        virtual void refresh()=0;//页面可以被刷新
    };
}

